package cn.b.sky.mes.em.service;

import java.util.Date;
import java.util.List;

import cn.b.sky.mes.em.model.MaintainTaskCause;
import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.em.model.MaintainTask;
import cn.b.sky.mes.em.model.MaintainTaskPart;
import cn.b.sky.mes.em.model.condition.MaintainTaskCondition;
import cn.b.sky.common.model.BatchJobReport;

/**
 * 
 * <strong>Title : MaintainTaskService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.em.service<br></strong>
 * <strong>Description : </strong>维护任务业务接口<br> 
 * <strong>Create on : 2015-11-9 下午03:45:37<br></strong>
 * <p>
 * @author zhaoxin01<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface MaintainTaskService {
  /**
   * 
   * <strong>Title : doCreateCycleMaintainTaskJob<br></strong>
   * <strong>Description : </strong>产生周期型维护任务的定时作业<br> 
   * <strong>Create on : 2015-11-9 下午04:06:31<br></strong>
   * <p>
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void doCreateCycleMaintainTaskJob();

  /**
   * 
   * <strong>Title : doCreateCountMaintainTaskJob<br></strong>
   * <strong>Description : </strong>产生计数型维护任务的定时作业<br> 
   * <strong>Create on : 2015-11-9 下午04:07:27<br></strong>
   * <p>
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void doCreateCountMaintainTaskJob();

  /**
   * 
   * <strong>Title : selectMaintainTask<br></strong>
   * <strong>Description : </strong>根据工厂、设备、策略及计划日期查询任务<br> 
   * <strong>Create on : 2015-11-10 下午01:33:10<br></strong>
   * <p>
   * @param maintainTask
   * @return
   * MaintainTask
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  MaintainTask selectMaintainTask(MaintainTask maintainTask);

  /**
   * 
   * <strong>Title : insertMaintainTask<br></strong>
   * <strong>Description : </strong>新增维护任务<br> 
   * <strong>Create on : 2015-11-10 下午01:34:36<br></strong>
   * <p>
   * @param maintainTask
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertMaintainTask(MaintainTask maintainTask);

  /**
   * 
   * <strong>Title : deleteMaintainTaskByStatus<br></strong>
   * <strong>Description : </strong>根据工厂、设备、策略、状态删除维护任务<br> 
   * <strong>Create on : 2015-11-10 下午02:02:55<br></strong>
   * <p>
   * @param siteCode
   * @param equipmentCode
   * @param strategyCode
   * @param statusECode
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteMaintainTaskByStatus(String siteCode, String equipmentCode, String strategyCode, String statusECode);

  /**
   * 
   * <strong>Title : selectMaintainTaskByCondition<br></strong>
   * <strong>Description : </strong>分页查询维护任务<br> 
   * <strong>Create on : 2015-11-11 下午02:46:49<br></strong>
   * <p>
   * @param maintainTaskCondition
   * @return
   * List<MaintainTask>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MaintainTask> selectMaintainTaskByCondition(MaintainTaskCondition maintainTaskCondition);

  /**
   *  
   * <strong>Title : selectMaintainTaskCount<br></strong>
   * <strong>Description : </strong>查询维护任务条数<br> 
   * <strong>Create on : 2015-11-11 下午02:49:05<br></strong>
   * <p>
   * @param maintainTaskCondition
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectMaintainTaskCount(MaintainTaskCondition maintainTaskCondition);

  /**
   * 
   * <strong>Title : selectMaintainTaskByCode<br></strong>
   * <strong>Description : </strong>根据编号查询维护任务<br> 
   * <strong>Create on : 2015-11-11 下午02:52:12<br></strong>
   * <p>
   * @param siteCode
   * @param taskCode
   * @return
   * MaintainTask
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  MaintainTask selectMaintainTaskByCode(@Param("siteCode") String siteCode, @Param("taskCode") String taskCode);

  /**
   * 
   * <strong>Title : updateMaintainTask<br></strong>
   * <strong>Description : </strong>更新维护任务<br> 
   * <strong>Create on : 2015-11-11 下午02:53:00<br></strong>
   * <p>
   * @param maintainTask
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateMaintainTask(MaintainTask maintainTask, List<MaintainTaskCause> causes, List<MaintainTaskPart> parts);

  void doSubmitMaintainTask(MaintainTask maintainTask, List<MaintainTaskCause> causes, List<MaintainTaskPart> parts);

  /**
   * 
   * <strong>Title : selectMaintainTaskCauseList<br></strong>
   * <strong>Description : </strong>查询故障原因<br> 
   * <strong>Create on : 2015-11-12 上午10:44:30<br></strong>
   * <p>
   * @param siteCode
   * @param taskCode
   * @return
   * List<MaintainTaskCause>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MaintainTaskCause> selectMaintainTaskCauseList(@Param("siteCode") String siteCode,
      @Param("taskCode") String taskCode);

  /**
   * 
   * <strong>Title : selectMaintainTaskPartList<br></strong>
   * <strong>Description : </strong>查询备件<br> 
   * <strong>Create on : 2015-11-12 上午10:44:43<br></strong>
   * <p>
   * @param siteCode
   * @param taskCode
   * @return
   * List<MaintainTaskPart>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MaintainTaskPart> selectMaintainTaskPartList(String siteCode, String taskCode);

  /**
   * 
   * <strong>Title : doExecuteMaintainTask<br></strong>
   * <strong>Description : </strong>执行维护任务<br> 
   * <strong>Create on : 2015-11-13 上午10:31:44<br></strong>
   * <p>
   * @param siteCode
   * @param taskCode
   * @return
   * BatchJobReport
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doExecuteMaintainTask(String siteCode, String taskCode);

  /**
   * 
   * <strong>Title : doCancelMaintainTask<br></strong>
   * <strong>Description : </strong>取消任务<br> 
   * <strong>Create on : 2015-11-13 下午06:46:35<br></strong>
   * <p>
   * @param siteCode
   * @param taskCode
   * @return
   * BatchJobReport
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doCancelMaintainTask(String siteCode, String taskCode);

  /**
   * 
   * <strong>Title : selectMaintainTaskCountForCal<br></strong>
   * <strong>Description : </strong>查询日历任务统计结果<br> 
   * <strong>Create on : 2015-11-17 下午02:55:06<br></strong>
   * <p>
   * @param siteCode
   * @param beginDate
   * @param endDate
   * @return
   * List<MaintainTask>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MaintainTask> selectMaintainTaskCountForCal(String siteCode, Date beginDate, Date endDate);

  /**
   * 
   * <strong>Title : selectMaintainTaskCountDeatilForCal<br></strong>
   * <strong>Description : </strong>获得指定日期的统计明细<br> 
   * <strong>Create on : 2015-11-17 下午06:38:41<br></strong>
   * <p>
   * @param siteCode
   * @param day
   * @return
   * MaintainTask
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  MaintainTask selectMaintainTaskCountDeatilForCal(String siteCode, Date day);

  List<MaintainTask> selectMaintainTaskByDate(MaintainTask maintainTask, Date beginDate, Date endDate);

}
